function pagination(options) {
	options = jQuery.extend({
		url : "./search.do",
		type : 'POST',
		data: {},
		dataType : 'json',
		callback : function(d) {

		}
	}, options || {});
	
	var data = jQuery.extend( {
		pageNo : 1,
		pageSize : 10,
		orderType : "desc",
		orderBy : "isTop",
		rules : "[]"
	},options.data || {})
	$.ajax({
		url : options.url,
		type : "POST",
		dataType : 'json',
		data :data,
		success : function(data) {
			$(".pagination .info")
					.html(
							"Page " + data.pageNo + " of " + data.totalPages + "&nbsp;");
			var prev = $(".pagination .previous").attr("data-page", data.prePage);
			var next = $(".pagination .next").attr("data-page", data.nextPage);
			$(".pagination .last").attr("data-page", data.totalPages);
			if (data.pageNo == 1) {
				$(".pagination .first").addClass("disabled");
			} else {
				$(".pagination .first").removeClass("disabled");
			}
			if (!data.hasPre) {
				prev.addClass("disabled");
			} else {
				prev.removeClass("disabled");
			}
			if (!data.hasNext) {
				next.addClass("disabled");
			} else {
				next.removeClass("disabled");
			}
			if (data.totalPages == data.pageNo) {
				$(".pagination .last").addClass("disabled");
			} else {
				$(".pagination .last").removeClass("disabled");
			}
			$(".pagination a.number").off("click").remove();
			$(".pagination a.more").hide();
			var begin = data.pageNo - 2;
			if (data.totalPages - 2 < data.pageNo) {
				begin = data.totalPages - 4;
			}
			var j = 1;
			for ( var i = begin; i < data.totalPages + 1; i++) {
				if (i > 0) {
					var current = "";
					if (data.pageNo == i) {
						current = "current";
					}
					$("<a>").attr("title", i)
							.attr("href", "javascript:void(0)").attr(
									"data-page", i).text(i).addClass("number")
							.addClass(current).insertBefore(
									".pagination a.more");
					if (j >= 5)
						break;
					j++;
				}
			}
			if (data.totalPages > 5 && data.pageNo + 2 < data.totalPages) {
				$(".pagination a.more").show();
			}
			options.callback(data);
		},
		error : function(response) {
			showInfo(response.status + " - " + response.statusText, function() {
			})
		}
	})
}